Natural Language Processing (NLP) of an input text or query may be performed more accurately and more efficiently within a domain having a specific and limited set of vocabulary and linguistic constructions. A system for NLP may include multiple domains. Each domain handles input texts that deal with a specialized area of inquiry. The input text thus may need to be assigned to one or more domains by a domain classifier prior to semantic processing with a domain. Domain classification may be based on machine learning using training corpora developed from bodies of existing input text and their expert-annotated domain assignment. Some domains may be relatively “cold” in that no statistically sufficient corpora may exist for these domains and it may be economically or technically infeasible to quickly develop expert annotated corpora for these domains upon deployment. In addition, adding or removing features in a domain over time may require retraining. Further, a domain may need to be customized to certain subclasses of users with each subclass needing different training.